package com.javaex.book.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则相关工具
 *
 * @author 黄星琦
 * @Date 2022年3月2日
 */
public class RegexUtils {

	/**
	 * 使用正则表达式从字符串中提取字符串
	 * @param regex 正则表达式
	 * @param str 用于提取的字符串
	 * @return 提取出的所有字符串
	 */
	public static List<String> extract(String regex, String str) {
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(str);
		List<String> list = new ArrayList<String>();
		while (matcher.find()) {
			for (int i = 1; i <= matcher.groupCount(); i++) {
				list.add(matcher.group(i));
			}
		}
		return list;
	}
	
	/**
	 * 使用正则表达式从字符串中提取字符串
	 * @param regex 正则表达式
	 * @param str 用于提取的字符串
	 * @param flag Pattern.compile第二个参数
	 * @return 提取出的所有字符串
	 */
	public static List<String> extract(String regex, String str, int flag) {
		Pattern pattern = Pattern.compile(regex, flag);
		Matcher matcher = pattern.matcher(str);
		List<String> list = new ArrayList<String>();
		while (matcher.find()) {
			for (int i = 1; i <= matcher.groupCount(); i++) {
				list.add(matcher.group(1));
			}
		}
		return list;
	}
}
